1   /*
2    * Copyright (C) 2009 The Guava Authors
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  
17  package com.google.common.escape;
18  
19  import com.google.common.annotations.GwtCompatible;
20  
21  /**
22   * Methods factored out so that they can be emulated differently in GWT.
23   *
24   * @author Jesse Wilson
25   */
26  @GwtCompatible(emulated = true)
27  final class Platform {
28    private Platform() {}
29  
30    /** Returns a thread-local 1024-char array. */
31    static char[] charBufferFromThreadLocal() {
32      return DEST_TL.get();
33    }
34  
35    /**
36     * A thread-local destination buffer to keep us from creating new buffers.
37     * The starting size is 1024 characters.  If we grow past this we don't
38     * put it back in the threadlocal, we just keep going and grow as needed.
39     */
40    private static final ThreadLocal<char[]> DEST_TL = new ThreadLocal<char[]>() {
41      @Override
42      protected char[] initialValue() {
43        return new char[1024];
44      }
45    };
46  }